package api

type CreatePaymentsRes struct {
	Id                         string `json:"id"`
	Amount                     string `json:"amount"`
	BeneficiaryId              string `json:"beneficiary_id"`
	Currency                   string `json:"currency"`
	Reference                  string `json:"reference"`
	Reason                     string `json:"reason"`
	Status                     string `json:"status"`
	CreatorContactId           string `json:"creator_contact_id"`
	PaymentType                string `json:"payment_type"`
	PaymentDate                string `json:"payment_date"`
	TransferredAt              string `json:"transferred_at"`
	AuthorisationStepsRequired string `json:"authorisation_steps_required"`
	LastUpdaterContactId       string `json:"last_updater_contact_id"`
	ShortReference             string `json:"short_reference"`
	ConversionId               string `json:"conversion_id"`
	FailureReason              string `json:"failure_reason"`
	PayerId                    string `json:"payer_id"`
	PayerDetailsSource         string `json:"payer_details_source"`
	CreatedAt                  string `json:"created_at"`
	UpdatedAt                  string `json:"updated_at"`
	PaymentGroupId             string `json:"payment_group_id"`
	UniqueRequestId            string `json:"unique_request_id"`
	FailureReturnedAmount      string `json:"failure_returned_amount"`
	UltimateBeneficiaryName    string `json:"ultimate_beneficiary_name"`
	PurposeCode                string `json:"purpose_code"`
	ChargeType                 string `json:"charge_type"`
	FeeAmount                  string `json:"fee_amount"`
	FeeCurrency                string `json:"fee_currency"`
	ReviewStatus               string `json:"review_status"`
	InvoiceNumber              string `json:"invoice_number"`
	InvoiceDate                string `json:"invoice_date"`
}

type ConversionsReq struct {
	BuyCurrency    string `json:"buy_currency"`
	SellCurrency   string `json:"sell_currency"`
	Amount         string `json:"amount"`
	FixedSide      string `json:"fixed_side"`
	Reason         string `json:"reason"`
	TermAgreement  bool   `json:"term_agreement"`
	ConversionDate string `json:"conversion_date"`
}

type ConversionsRes struct {
	Id                string   `json:"id"`
	SettlementDate    string   `json:"settlement_date"`
	ConversionDate    string   `json:"conversion_date"`
	ShortReference    string   `json:"short_reference"`
	CreatorContactId  string   `json:"creator_contact_id"`
	AccountId         string   `json:"account_id"`
	CurrencyPair      string   `json:"currency_pair"`
	Status            string   `json:"status"`
	BuyCurrency       string   `json:"buy_currency"`
	SellCurrency      string   `json:"sell_currency"`
	ClientBuyAmount   string   `json:"client_buy_amount"`
	ClientSellAmount  string   `json:"client_sell_amount"`
	FixedSide         string   `json:"fixed_side"`
	CoreRate          string   `json:"core_rate"`
	PartnerRate       string   `json:"partner_rate"`
	PartnerStatus     string   `json:"partner_status"`
	PartnerBuyAmount  string   `json:"partner_buy_amount"`
	PartnerSellAmount string   `json:"partner_sell_amount"`
	ClientRate        string   `json:"client_rate"`
	DepositRequired   bool     `json:"deposit_required"`
	DepositAmount     string   `json:"deposit_amount"`
	DepositCurrency   string   `json:"deposit_currency"`
	DepositStatus     string   `json:"deposit_status"`
	DepositRequiredAt string   `json:"deposit_required_at"`
	PaymentIds        []string `json:"payment_ids"`
	UnallocatedFunds  string   `json:"unallocated_funds"`
	//UniqueRequestId   interface{} `json:"unique_request_id"`
	CreatedAt     string `json:"created_at"`
	UpdatedAt     string `json:"updated_at"`
	MidMarketRate string `json:"mid_market_rate"`
}

type CreateBeneficiaryReq struct {
	Name                  string `json:"name"`
	BankAccountHolderName string `json:"bank_account_holder_name"`
	BankCountry           string `json:"bank_country"`
	Currency              string `json:"currency"`
}

type ComplyOnboardingReq struct {
	Customer Customer `json:"customer"`
	//Product  []ProductList `json:"product"`
}

type Customer struct {
	CustomerId    string  `json:"customer_id"`
	Person        Person  `json:"person"`  //必传
	Company       Company `json:"company"` //必传
	Configuration struct {
		MonitorConfigurationIdentifier   string `json:"monitor_configuration_identifier"`
		ScreeningConfigurationIdentifier string `json:"screening_configuration_identifier"`
	} `json:"configuration"`
	CustomerIdentifier struct {
		Id string `json:"id"`
	} `json:"customer_identifier"` //必传
	CustomerStatus     string `json:"customer_status"` //必传
	ExternalIdentifier struct {
		Id string `json:"id"`
	} `json:"external_identifier"` //必传
}

type Person struct {
	Title   string `json:"title"`
	Address []struct {
		AddressLine1       string `json:"address_line1"`
		AddressLine2       string `json:"address_line2"`
		AddressType        string `json:"address_type"`
		Country            string `json:"country"`
		CountrySubdivision string `json:"country_subdivision"`
		PostCode           string `json:"post_code"`
		TownName           string `json:"town_name"`
	} `json:"address"`
	DateOfBirth struct {
		Day   int32 `json:"day"`   //必填
		Month int32 `json:"month"` //必填
		Year  int32 `json:"year"`  //必填
	} `json:"date_of_birth"`
	ContactInformation struct {
		EmailAddress []string `json:"email_address"`
		FaxNumber    []string `json:"fax_number"`
		Url          []string `json:"url"`
		PhoneNumber  []string `json:"phone_number"`
	} `json:"contact_information"`
	CountryOfBirth         string   `json:"country_of_birth"`
	FirstName              string   `json:"first_name"`
	Gender                 string   `json:"gender"`
	LastName               string   `json:"last_name"`
	MiddleName             string   `json:"middle_name"`
	Nationality            []string `json:"nationality"`
	PersonalIdentification []struct {
		Type               string `json:"type"`                //必填
		DocumentIdentifier string `json:"document_identifier"` //必填
		IssuingCountry     string `json:"issuing_country"`     //必填
		DateOfIssue        struct {
			Year  int `json:"year"`  //必填
			Month int `json:"month"` //必填
			Day   int `json:"day"`   //必填
		} `json:"date_of_issue"`
		DateOfExpiry struct {
			Year  int `json:"year"`  //必填
			Month int `json:"month"` //必填
			Day   int `json:"day"`   //必填
		} `json:"date_of_expiry"`
	} `json:"personal_identification"`
	Profession             []string `json:"profession"`
	ResidentialInformation []struct {
		CountryOfResidence string `json:"country_of_residence"` //必填
		ResidentialStatus  string `json:"residential_status"`
	} `json:"residential_information"`
	SalaryCurrency string `json:"salary_currency"`
	SalaryRange    struct {
		Low  int `json:"low"`  //必填
		High int `json:"high"` //必填
	} `json:"salary_range"`
	SourceOfWealth string `json:"source_of_wealth"`
}

type Company struct {
	Addresses []struct {
		AddressLine1       string `json:"address_line1"`
		AddressLine2       string `json:"address_line2"`
		AddressType        string `json:"address_type"`
		Country            string `json:"country"`
		CountrySubdivision string `json:"country_subdivision"`
		PostCode           string `json:"post_code"`
		TownName           string `json:"town_name"`
	} `json:"addresses"` //必传
	Aliases           []string `json:"aliases"` //必传
	CompanyStatus     string   `json:"company_status"`
	CompanyType       string   `json:"company_type"`
	IncorporationDate struct {
		Day   int32 `json:"day"`   //必传
		Month int32 `json:"month"` //必传
		Year  int32 `json:"year"`  //必传
	} `json:"incorporation_date"`
	LegalName                           string `json:"legal_name"`
	PlaceOfRegistration                 string `json:"place_of_registration"`
	RegistrationAuthorityIdentification string `json:"registration_authority_identification"`
}

type ProductList struct {
	ProductName              string `json:"product_name"`
	ProductStatus            string `json:"product_status"`
	Currency                 string `json:"currency"`
	MonthlyPaymentValue      string `json:"monthly_payment_value"`
	MonthlyReceivedValue     string `json:"monthly_received_value"`
	MonthlyTransactionNumber string `json:"monthly_transaction_number"`
	Purpose                  string `json:"purpose"`
	ProductDetails           struct {
		BankAccount struct {
			AccountNumber string `json:"account_number"`
			SortCode      string `json:"sort_code"`
			Iban          string `json:"iban"`
			Bban          string `json:"bban"`
			Bank          struct {
				Bic string `json:"bic"`
			} `json:"bank"`
		} `json:"bank_account"`
		CryptoWallet struct {
			ManagingExchange string `json:"managing_exchange"`
			WalletId         string `json:"wallet_id"`
		} `json:"crypto_wallet"`
	} `json:"product_details"`
	OnboardingChannel struct {
		Online struct {
			IpAddress  string `json:"ip_address"`
			IpFormat   string `json:"ip_format"`
			DeviceId   string `json:"device_id"`
			DeviceType string `json:"device_type"`
		} `json:"online"`
		InBranch struct {
			BranchIdentifier string `json:"branch_identifier"`
		} `json:"in_branch"`
	} `json:"onboarding_channel"`
}

type ComplyOnboardingRes struct {
	WorkflowInstanceIdentifier string `json:"workflow_instance_identifier"`
}

type CustomerMessageRes struct {
	CustomerId     string `json:"customer_id"`
	CustomerStatus string `json:"customer_status"`
	Message        string `json:"message"`
	LegalName      string `json:"legal_name"`
	//OverallLevel    string `json:"overall_level"`
	//OverallValue    string `json:"overall_value"`
	//ScreeningResult string `json:"screening_result"`
}
